package com.c2b.algorithm.leetcode.base;

/**
 * <a href='https://leetcode.cn/problems/count-elements-with-maximum-frequency/'>最大频率元素计数(Count Elements With Maximum Frequency)</a>
 * <p>给你一个由 正整数 组成的数组 nums 。</p>
 * <p>返回数组 nums 中所有具有 最大 频率的元素的 总频率 。</p>
 * <p>元素的 频率 是指该元素在数组中出现的次数。</p>
 *
 * <p>
 * <b>示例</b>
 * <pre>
 * 示例 1：
 *      输入：nums = [1,2,2,3,1,4]
 *      输出：4
 *      解释：元素 1 和 2 的频率为 2 ，是数组中的最大频率。
 *          因此具有最大频率的元素在数组中的数量是 4 。
 *
 * 示例 2：
 *      输入：nums = [1,2,3,4,5]
 *      输出：5
 *      解释：数组中的所有元素的频率都为 1 ，是最大频率。
 *          因此具有最大频率的元素在数组中的数量是 5 。
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 *  <ul>
 *      <li>1 <= nums.length <= 100</li>
 *      <li>1 <= nums[i] <= 100</li>
 *  </ul>
 * </p>
 *
 * @author c2b
 * @since 2024/1/22 17:35
 */
public class LC3005CountElementsWithMaximumFrequency_S {

    static class Solution {
        public int maxFrequencyElements(int[] nums) {
            int[] cnt = new int[101];
            int maxFrequency = 0;
            int res = 0;
            for (int num : nums) {
                ++cnt[num];
                if (cnt[num] > maxFrequency) {
                    maxFrequency = cnt[num];
                    res = maxFrequency;
                } else if (cnt[num] == maxFrequency) {
                    res += maxFrequency;
                }
            }
            return res;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.maxFrequencyElements(new int[]{1, 2, 2, 3, 1, 4}));
        System.out.println(solution.maxFrequencyElements(new int[]{1, 2, 3, 4, 5}));
    }
}
